Tanenbaum model
以下は上下が逆順なのに注意
5 layers:
物理層
aka. layer 1
symbol
bit ⇄ symbol
提供するサービス
bit stream
over symbol stream
protocols
xDSL
CATV
SONET
LTE
aka. 4G
データ・リンク層
aka. layer 2
frame
protocols
対向と じかに通信してる と見ると分かりやすい。
これは protocol 全般に言える話だ。
提供するサービス
パケットを受け付ける
frame stream
機能
ネットワーク層のパケットを受け付けるインターフェイス
bits into frames
フレーム分割が必要
伝送誤り対策
ここでも信頼性を ある程度 保証する。
下層
フレームを送信する
frame stream
bit stream を受信する
サービス class 3種
確認通知なし connectionless service
確認通知付き connectionless service
(確認通知付き)connection指向 service
確認通知
フレーム分割方式
4 methods
byte数
byte詰め からの flag byte
e.g. PPP
bit詰め からの flag pattern
…違反
テクニック
byte stuffing & escaping
preamble
errors
bit flip
burst error
誤り制御
フレーム分割
方式
byte数
errorに弱い
byte stuffing
flag byte
最悪+100%の増加
bit stuffing
e.g. HDLC
平均 1/8 = 12.5% の悪化
物理層を使う
coding violation
preamble
信頼性
テクニック
ARQなどの確認通知
タイマーからの再送
順序番号
en: sequence number
責務
結果的に exactly once を達成したい。重複排除は対向が やる。
rate-based flow control
minor
feedback-based flow control
上位層でも繰り返される。
誤り制御戦略
error-correcting code
ja: 誤り訂正符号
error-detecting code
ja: 誤り検出符号
aka. forward error correction = FEC
error rate の spectrum ごとの戦略
低頻度: 誤り検出符号
高頻度: 誤り訂正符号
符号
parity bit
check sum
CRC
frame
構成要素4つ組
kind
seq
min = 1 bit
ack
info
body(本体)相当
制御フレームなら、ないことも
frame header: kind, seq, ack
window
w: width
w = 1
minor
w > 1
ragular
prop.
MAX_SEQ_N + 1 = MAX_W
[n,n)、特に[0,0)なのは初期状態のときのみ。
[a,b) にて buffered n は n = b - a mod (MAX_SEQ_N+1)
w = 2×B+1
bandwidth-delay
副層
channel割り当て問題を処理してる。
LLC
フレームのペイロードの抽象を暴いて、内部のパケットのプロトコルを峻別する。引き渡し。
ネットワーク層
cf. layer 3
packet
stream or datagram
internetworking
これが主な仕事
テーブル更新プロセスがあると見なせる。
forwarding
ルーティングに従って実際にパケットを転送するプロセスだと言える。
現象
en: congestion
fragmentation
MTU の調整が必要
protocols
ICMPv6
ARP/NDP
DHCP
MPLS
abbt. of multi protocol label switching
主に ISP が内部的に使うらしい。
peering で使う?
connection-oriented
PPP < MPLS < IP
so-called layer 2.5
label
indexed
exact match
トランスポート層
cf. layer 4
segment
stream or datagram
提供サービス
reliable byte stream
aka. reliable bit pipe
⊂ connection-oriented service
connectionless as well
e.g. datagram
or message stream
protocol stack の核心部分
なので ここで 層を二分割する。
above/below
vs. data link layer
via channel vs network
XXX over TCP が また transport layer だと見ることも できる。
next gen
RFC 4960 → RFC 9260
SCTP
SST: Structured Stream Transport
応用
クラサバ
XXX over UDP もトランスポート層だと思える。
over UDP
アプリケーション層に実装されたトランスポート・プロトコル
by タネンバウム
ここに おける かも?
TLS over TPC も TLS over UDP も できる。
cf. DTLS
アプリケーション層
5, 6 は不要だった。
e.g. HTTP, DNS
副層?wint.icon
このしたに LTS のレイヤーを置くこともある。
このしたに DTN の bundle layer を置くこともある。
対比
table:layer 2 to 4
# 誤り制御 フロー制御 輻輳制御
2 あり あり なし
3 なし* なし 部分的**
4 あり あり あり
* IPv6 の場合
** ルーターが輻輳の通知を出したり、 AS による traffic engineering によって迂回路を取れたり する。